\hypertarget{classcSymmetricRep}{\section{c\-Symmetric\-Rep$<$ T $>$ Class Template Reference}
\label{classcSymmetricRep}\index{c\-Symmetric\-Rep$<$ T $>$@{c\-Symmetric\-Rep$<$ T $>$}}
}


{\ttfamily \#include $<$symmetric\-\_\-rep.\-h$>$}



Collaboration diagram for c\-Symmetric\-Rep$<$ T $>$\-:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=206pt]{classcSymmetricRep__coll__graph}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classcSymmetricRep_abb21d3323b4e2133ec7bbc4f2d45d968}{typedef \hyperlink{classcSymmetricRep}{c\-Symmetric\-Rep}$<$ T $>$ {\bfseries Self\-Type}}\label{classcSymmetricRep_abb21d3323b4e2133ec7bbc4f2d45d968}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classcSymmetricRep_a64f4c25b8f5aebbd78f49f3485aed88f}{c\-Symmetric\-Rep} (std\-::vector$<$ T $>$ \&generators\-\_\-set)
\item 
\hyperlink{classcSymmetricRep_a47ba133fe6f1ba2b8d3da5ae6cb001d9}{c\-Symmetric\-Rep} (std\-::initializer\-\_\-list$<$ T $>$ perm\-\_\-list)
\item 
\hypertarget{classcSymmetricRep_a5fa8e9aabcacfddbf5f8d896a9bf6c94}{{\bfseries c\-Symmetric\-Rep} (const \hyperlink{classcSymmetricRep}{Self\-Type} \&sym\-\_\-rep)}\label{classcSymmetricRep_a5fa8e9aabcacfddbf5f8d896a9bf6c94}

\item 
\hypertarget{classcSymmetricRep_a42ce2132ef0a6c51f7afc4496c121cbe}{\hyperlink{classcSymmetricRep}{c\-Symmetric\-Rep} \& {\bfseries operator=} (const \hyperlink{classcSymmetricRep}{Self\-Type} \&sym\-\_\-rep)}\label{classcSymmetricRep_a42ce2132ef0a6c51f7afc4496c121cbe}

\item 
bool \hyperlink{classcSymmetricRep_a60f095284b40e494a34fda76e1fc7ecd}{Contains} (const T \&element) const 
\item 
std\-::vector$<$ T $>$ \hyperlink{classcSymmetricRep_a935cec1dbd90a09581f1aa7f150eb9de}{Get\-Elements\-Naive} () const 
\item 
std\-::vector$<$ T $>$ \hyperlink{classcSymmetricRep_ad9f112b996c14824bd1d669aed162cbf}{Get\-Elements\-Dimino} () const 
\item 
std\-::vector$<$ std\-::size\-\_\-t $>$ \hyperlink{classcSymmetricRep_a62cbd7057456f503eec43d592497e94f}{Get\-Orbit} (const std\-::size\-\_\-t \&set\-\_\-element) const 
\item 
\hypertarget{classcSymmetricRep_af90591a8af82e61668da036efa04a5fd}{const std\-::vector$<$ T $>$ \& {\bfseries Get\-Generators\-Set} () const }\label{classcSymmetricRep_af90591a8af82e61668da036efa04a5fd}

\item 
\hypertarget{classcSymmetricRep_a10df8259eeafac4f03c8d7b251f37dfb}{void {\bfseries Set\-Generators\-Set} (const std\-::vector$<$ T $>$ \&gen\-\_\-set)}\label{classcSymmetricRep_a10df8259eeafac4f03c8d7b251f37dfb}

\item 
\hypertarget{classcSymmetricRep_a59125541fe5801e2073cacb54ed879d8}{void {\bfseries Add\-Generator} (const T \&element)}\label{classcSymmetricRep_a59125541fe5801e2073cacb54ed879d8}

\item 
\hypertarget{classcSymmetricRep_a37c8cab52b7ef4aa4b83f3ef203036ef}{void {\bfseries Clear\-Generators} ()}\label{classcSymmetricRep_a37c8cab52b7ef4aa4b83f3ef203036ef}

\item 
\hypertarget{classcSymmetricRep_a30639c704b01408475c9fd4a100d738d}{bool {\bfseries operator==} (const \hyperlink{classcSymmetricRep}{Self\-Type} \&symgrp) const }\label{classcSymmetricRep_a30639c704b01408475c9fd4a100d738d}

\item 
\hypertarget{classcSymmetricRep_a77bcf4f11ff92c57aa6626c075bf3355}{bool {\bfseries operator!=} (const \hyperlink{classcSymmetricRep}{Self\-Type} \&symgrp) const }\label{classcSymmetricRep_a77bcf4f11ff92c57aa6626c075bf3355}

\item 
\hypertarget{classcSymmetricRep_a5182c5dcf4247c03a7e0de001e7c1cf3}{T {\bfseries Get\-Identity} () const }\label{classcSymmetricRep_a5182c5dcf4247c03a7e0de001e7c1cf3}

\item 
std\-::vector$<$ T $>$ \hyperlink{classcSymmetricRep_a2dfa5d3358d69914a625536d994be72c}{Get\-Cyclic\-Subgroup\-El} (const T \&element) const 
\item 
std\-::vector$<$ T $>$ \hyperlink{classcSymmetricRep_ac110028d8d6e161448f15bc1548d5274}{Get\-Cyclic\-Subgroup\-El} (const std\-::size\-\_\-t size)
\item 
std\-::vector$<$ T $>$ \hyperlink{classcSymmetricRep_a4a9724dc8ba8c8ccc041fe1f86dc4701}{Get\-Dihedral\-Subgroup\-El} (const std\-::size\-\_\-t size)
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classcSymmetricRep_ab9afa5a928d6fba3c560e0245ab5d0e4}{std\-::vector$<$ T $>$ {\bfseries m\-\_\-\-Gen\-Set}}\label{classcSymmetricRep_ab9afa5a928d6fba3c560e0245ab5d0e4}

\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classcSymmetricRep_ad73abea0c910e6d44cac98fd4bc1a8a8}{std\-::ostream \& {\bfseries operator$<$$<$} (std\-::ostream \&out, const \hyperlink{classcSymmetricRep}{Self\-Type} \&group\-\_\-rep)}\label{classcSymmetricRep_ad73abea0c910e6d44cac98fd4bc1a8a8}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename T$>$class c\-Symmetric\-Rep$<$ T $>$}

symmetric group internal representation class used only from \hyperlink{classcGroup}{c\-Group} T\-O\-D\-O -- add elements member + Get\-Elements method (cache) 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classcSymmetricRep_a64f4c25b8f5aebbd78f49f3485aed88f}{\index{c\-Symmetric\-Rep@{c\-Symmetric\-Rep}!c\-Symmetric\-Rep@{c\-Symmetric\-Rep}}
\index{c\-Symmetric\-Rep@{c\-Symmetric\-Rep}!cSymmetricRep@{c\-Symmetric\-Rep}}
\subsubsection[{c\-Symmetric\-Rep}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T $>$ {\bf c\-Symmetric\-Rep}$<$ T $>$\-::{\bf c\-Symmetric\-Rep} (
\begin{DoxyParamCaption}
\item[{std\-::vector$<$ T $>$ \&}]{generators\-\_\-set}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classcSymmetricRep_a64f4c25b8f5aebbd78f49f3485aed88f}
constructs object from a vector of permutations \hypertarget{classcSymmetricRep_a47ba133fe6f1ba2b8d3da5ae6cb001d9}{\index{c\-Symmetric\-Rep@{c\-Symmetric\-Rep}!c\-Symmetric\-Rep@{c\-Symmetric\-Rep}}
\index{c\-Symmetric\-Rep@{c\-Symmetric\-Rep}!cSymmetricRep@{c\-Symmetric\-Rep}}
\subsubsection[{c\-Symmetric\-Rep}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T $>$ {\bf c\-Symmetric\-Rep}$<$ T $>$\-::{\bf c\-Symmetric\-Rep} (
\begin{DoxyParamCaption}
\item[{std\-::initializer\-\_\-list$<$ T $>$}]{perm\-\_\-list}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classcSymmetricRep_a47ba133fe6f1ba2b8d3da5ae6cb001d9}
constructs object from an intializer list of permutations 

\subsection{Member Function Documentation}
\hypertarget{classcSymmetricRep_a60f095284b40e494a34fda76e1fc7ecd}{\index{c\-Symmetric\-Rep@{c\-Symmetric\-Rep}!Contains@{Contains}}
\index{Contains@{Contains}!cSymmetricRep@{c\-Symmetric\-Rep}}
\subsubsection[{Contains}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T $>$ bool {\bf c\-Symmetric\-Rep}$<$ T $>$\-::Contains (
\begin{DoxyParamCaption}
\item[{const T \&}]{element}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classcSymmetricRep_a60f095284b40e494a34fda76e1fc7ecd}
returns true if it finds the element in the elements obtained by running Dimino's algorithm 

Here is the call graph for this function\-:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classcSymmetricRep_a60f095284b40e494a34fda76e1fc7ecd_cgraph}
\end{center}
\end{figure}


\hypertarget{classcSymmetricRep_a2dfa5d3358d69914a625536d994be72c}{\index{c\-Symmetric\-Rep@{c\-Symmetric\-Rep}!Get\-Cyclic\-Subgroup\-El@{Get\-Cyclic\-Subgroup\-El}}
\index{Get\-Cyclic\-Subgroup\-El@{Get\-Cyclic\-Subgroup\-El}!cSymmetricRep@{c\-Symmetric\-Rep}}
\subsubsection[{Get\-Cyclic\-Subgroup\-El}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T $>$ std\-::vector$<$T$>$ {\bf c\-Symmetric\-Rep}$<$ T $>$\-::Get\-Cyclic\-Subgroup\-El (
\begin{DoxyParamCaption}
\item[{const T \&}]{element}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classcSymmetricRep_a2dfa5d3358d69914a625536d994be72c}
returns the cyclic subgroup elements generated by the given element by computing it's powers until identity is reached Complexity\-: O(n), where n is the order of the element \hypertarget{classcSymmetricRep_ac110028d8d6e161448f15bc1548d5274}{\index{c\-Symmetric\-Rep@{c\-Symmetric\-Rep}!Get\-Cyclic\-Subgroup\-El@{Get\-Cyclic\-Subgroup\-El}}
\index{Get\-Cyclic\-Subgroup\-El@{Get\-Cyclic\-Subgroup\-El}!cSymmetricRep@{c\-Symmetric\-Rep}}
\subsubsection[{Get\-Cyclic\-Subgroup\-El}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T $>$ std\-::vector$<$T$>$ {\bf c\-Symmetric\-Rep}$<$ T $>$\-::Get\-Cyclic\-Subgroup\-El (
\begin{DoxyParamCaption}
\item[{const std\-::size\-\_\-t}]{size}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classcSymmetricRep_ac110028d8d6e161448f15bc1548d5274}
returns the cyclic subgroup \$\-C\-\_\-n\$ elements by rotating the identity permutation of the given size Complexity \$\-O(n)\$, where n is the size given as parameter \hypertarget{classcSymmetricRep_a4a9724dc8ba8c8ccc041fe1f86dc4701}{\index{c\-Symmetric\-Rep@{c\-Symmetric\-Rep}!Get\-Dihedral\-Subgroup\-El@{Get\-Dihedral\-Subgroup\-El}}
\index{Get\-Dihedral\-Subgroup\-El@{Get\-Dihedral\-Subgroup\-El}!cSymmetricRep@{c\-Symmetric\-Rep}}
\subsubsection[{Get\-Dihedral\-Subgroup\-El}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T $>$ std\-::vector$<$T$>$ {\bf c\-Symmetric\-Rep}$<$ T $>$\-::Get\-Dihedral\-Subgroup\-El (
\begin{DoxyParamCaption}
\item[{const std\-::size\-\_\-t}]{size}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classcSymmetricRep_a4a9724dc8ba8c8ccc041fe1f86dc4701}
returns the dihedral subgroup \$\-D\-\_\-2n\$ = \$\-C\-\_\-n + R\-\_\-n\$, where \$\-R\-\_\-n\$ is generated rotating by a fundamental reflection Complexity \$\-O(2n)\$, where n is the size of the symmetry n-\/gon 

Here is the call graph for this function\-:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classcSymmetricRep_a4a9724dc8ba8c8ccc041fe1f86dc4701_cgraph}
\end{center}
\end{figure}


\hypertarget{classcSymmetricRep_ad9f112b996c14824bd1d669aed162cbf}{\index{c\-Symmetric\-Rep@{c\-Symmetric\-Rep}!Get\-Elements\-Dimino@{Get\-Elements\-Dimino}}
\index{Get\-Elements\-Dimino@{Get\-Elements\-Dimino}!cSymmetricRep@{c\-Symmetric\-Rep}}
\subsubsection[{Get\-Elements\-Dimino}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T $>$ std\-::vector$<$T$>$ {\bf c\-Symmetric\-Rep}$<$ T $>$\-::Get\-Elements\-Dimino (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classcSymmetricRep_ad9f112b996c14824bd1d669aed162cbf}
returns the group elements by performing the Dimino algorithm T\-O\-D\-O -\/ Complexity\-: see Butler -\/ \char`\"{}\-Fundamental Algorithms for permutation groups\char`\"{} 

Here is the call graph for this function\-:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classcSymmetricRep_ad9f112b996c14824bd1d669aed162cbf_cgraph}
\end{center}
\end{figure}


\hypertarget{classcSymmetricRep_a935cec1dbd90a09581f1aa7f150eb9de}{\index{c\-Symmetric\-Rep@{c\-Symmetric\-Rep}!Get\-Elements\-Naive@{Get\-Elements\-Naive}}
\index{Get\-Elements\-Naive@{Get\-Elements\-Naive}!cSymmetricRep@{c\-Symmetric\-Rep}}
\subsubsection[{Get\-Elements\-Naive}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T $>$ std\-::vector$<$T$>$ {\bf c\-Symmetric\-Rep}$<$ T $>$\-::Get\-Elements\-Naive (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classcSymmetricRep_a935cec1dbd90a09581f1aa7f150eb9de}
returns the set of elements by trying to generate all combinations Complexity\-: O(n$^\wedge$2$\ast$m), where n is the number of elements and m is the number of generators T\-O\-D\-O -\/ by improving the data structure we could improve the find operation see Butler -\/ \char`\"{}\-Fundamental Algorithms for permutation groups\char`\"{} \hypertarget{classcSymmetricRep_a62cbd7057456f503eec43d592497e94f}{\index{c\-Symmetric\-Rep@{c\-Symmetric\-Rep}!Get\-Orbit@{Get\-Orbit}}
\index{Get\-Orbit@{Get\-Orbit}!cSymmetricRep@{c\-Symmetric\-Rep}}
\subsubsection[{Get\-Orbit}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T $>$ std\-::vector$<$std\-::size\-\_\-t$>$ {\bf c\-Symmetric\-Rep}$<$ T $>$\-::Get\-Orbit (
\begin{DoxyParamCaption}
\item[{const std\-::size\-\_\-t \&}]{set\-\_\-element}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classcSymmetricRep_a62cbd7057456f503eec43d592497e94f}
returns the orbit of a set element(the images of the elements under the group elements) Complexity\-: O(n$^\wedge$2$\ast$m) where n is the size of the orbit and m is the order of the group 

Here is the call graph for this function\-:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classcSymmetricRep_a62cbd7057456f503eec43d592497e94f_cgraph}
\end{center}
\end{figure}




The documentation for this class was generated from the following file\-:\begin{DoxyCompactItemize}
\item 
symmetric\-\_\-rep.\-h\end{DoxyCompactItemize}
